﻿using System;
using System.Collections.Generic;
using System.Text;
using HZ.Supervise.Model;

namespace HZ.Supervise.IBLL
{
    /// <summary>
    /// 有关角色的业务逻辑接口
    /// </summary>
    public interface IBLL_Role
    {
        //#region 角色操作
        ///// <summary>
        ///// 添加角色同时可添加权限信息(0不成功;1成功;2该名称已经存在)
        ///// </summary>
        ///// <param name="role">角色实体（可含权限信息）[RoleID不用赋值，由系统自动生成]</param>
        ///// <returns>0不成功;1成功;2该名称已经存在</returns>
        //int AddRole(Role role);

        ///// <summary>
        ///// 根据编号删除角色(包括递归删除角色权限)
        ///// [0.不成功,1.不成功,2.角色不存在,3.该角色已被用户使用，不能删除]
        ///// </summary>
        ///// <param name="roleid">角色编号</param>
        ///// <returns>0.不成功,1.成功,2.角色不存在,3.该角色已被用户使用，不能删除</returns>
        //int DeleteRole(string roleid);

        ///// <summary>
        ///// 设定角色的操作权限(连带更新)
        ///// </summary>
        ///// <param name="role">带角色操作权限的角色对象</param>
        ///// <returns></returns>
        //bool SetRoleOperatingRule(Role role);

        ///// <summary>
        ///// 设定角色名称及操作权限(连带更新)[0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在]
        ///// </summary>
        ///// <param name="role">带角色操作权限的角色对象</param>
        ///// <returns>0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在</returns>
        //int SetRole_OperatingRule(Role role);

        ///// <summary>
        ///// 设定角色名称[0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在]
        ///// </summary>
        ///// <param name="role">角色对象</param>
        ///// <returns>0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在</returns>
        //int SetRole(Role role);

        //#endregion

        //#region 角色查询
        ///// <summary>
        ///// 获取所有角色
        ///// </summary>
        ///// <param name="currentPage">当前页</param>
        ///// <param name="pageSize">每页显示记录数</param>
        ///// <param name="totalRecord">（输出参数）总记录数目</param>
        ///// <returns></returns>
        //IList<Role> GetAllRole(int currentPage, int pageSize, out int totalRecord);

        ///// <summary>
        ///// 获取所有角色
        ///// </summary>
        ///// <returns></returns>
        //IList<Role> GetAllRole();

        ///// <summary>
        ///// 根据角色编号获取该角色的操作权限
        ///// </summary>
        ///// <param name="roleid">角色编号</param>
        ///// <returns></returns>
        //IList<OperatingRule> GetRoleOperatingRuleByRoleID(string roleid);

        ///// <summary>
        ///// 根据角色编号获取该角色(包括操作权限)
        ///// </summary>
        ///// <param name="roleid">角色编号</param>
        ///// <returns>角色(包括操作权限)</returns>
        //Role GetRole_OperatingRule_ByRoleID(string roleid);
        //#endregion



            /// <summary>
            /// 获取所有角色
            /// </summary>
            /// <param name="currentPage">当前页</param>
            /// <param name="pageSize">每页显示记录数</param>
            /// <param name="totalRecord">（输出参数）总记录数目</param>
            /// <returns></returns>
            IList<Role> GetAllRole(int currentPage, int pageSize, out int totalRecord);
            /// <summary>
            /// 获取所有角色
            /// </summary>
            /// <returns></returns>
            IList<Role> GetAllRole();
            /// <summary>
            /// 根据角色编号获取该角色(包括操作权限)
            /// </summary>
            /// <param name="roleid">角色编号</param>
            /// <returns>角色(包括操作权限)</returns>
            Role GetRole_OperatingRule_ByRoleID(string roleid);
            /// <summary>
            /// 根据角色编号获取该角色的操作权限
            /// </summary>
            /// <param name="roleid">角色编号</param>
            /// <returns></returns>
            IList<OperatingRule> GetRoleOperatingRuleByRoleID(string roleid);
            /// <summary>
            /// 添加角色同时可添加权限信息(0不成功;1成功;2该名称已经存在)
            /// </summary>
            /// <param name="role">角色实体（可含权限信息）[RoleID不用赋值，由系统自动生成]</param>
            /// <returns>0不成功;1成功;2该名称已经存在</returns>
            int AddRole(Role role);
            /// <summary>
            /// 根据编号删除角色(包括递归删除角色权限)
            /// [0.不成功,1.不成功,2.角色不存在,3.该角色已被用户使用，不能删除]
            /// </summary>
            /// <param name="roleid">角色编号</param>
            /// <returns>0.不成功,1.成功,2.角色不存在,3.该角色已被用户使用，不能删除</returns>
            int DeleteRole(string roleid);
            /// <summary>
            /// 设定角色的操作权限(连带更新)
            /// </summary>
            /// <param name="role">带角色操作权限的角色对象</param>
            /// <returns></returns>
            bool SetRoleOperatingRule(Role role);
            /// <summary>
            /// 设定角色名称[0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在]
            /// </summary>
            /// <param name="role">角色对象</param>
            /// <returns>0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在</returns>
            int SetRole(Role role);

        }
    }
